/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ru.jSkyRoom.interfaces.major;

import ru.jSkyRoom.interfaces.additional.HasCastType;
import ru.jSkyRoom.interfaces.additional.HasConditions;
import ru.jSkyRoom.interfaces.additional.HasDeliveryType;
import ru.jSkyRoom.interfaces.additional.HasImpactData;
import ru.jSkyRoom.interfaces.additional.HasLight;
import ru.jSkyRoom.interfaces.additional.HasPerk;
import ru.jSkyRoom.interfaces.additional.HasProjectile;
import ru.jSkyRoom.interfaces.additional.HasSoundVolume;
import ru.jSkyRoom.interfaces.additional.HasKeywords;
import ru.jSkyRoom.interfaces.additional.HasScript;
import ru.jSkyRoom.interfaces.stub.Art;
import ru.jSkyRoom.interfaces.stub.DualCastArt;
import ru.jSkyRoom.interfaces.stub.EffectShader;
import ru.jSkyRoom.interfaces.stub.Explosion;
import ru.jSkyRoom.interfaces.stub.ImageSpaceMod;
import skyproc.MGEF.SpellEffectFlag;

/**
 *
 * @author Rakev
 */
public interface MagicEffect extends DescriptionedMajor, HasKeywords, HasScript, HasProjectile, HasCastType, HasDeliveryType, HasLight, HasImpactData, HasPerk, HasConditions, HasSoundVolume {

    public boolean getFlag(SpellEffectFlag flag);

    public void setFlag(SpellEffectFlag flag);

    public void unsetFlag(SpellEffectFlag flag);

    public float getBaseCost();

    public void setBaseCost(float cost);

    public Major getRelated();

    public void setRelated(Major related);

    public skyproc.genenums.ActorValue getSkillType();

    public void setSkillType(skyproc.genenums.ActorValue val);

    public skyproc.genenums.ActorValue getResistanceValue();

    public void setResistanceValue(skyproc.genenums.ActorValue val);

    public float getTaperWeight();

    public void setTaperWeight(float value);

    public EffectShader getHitShader();

    public void setHitShader(EffectShader hitShader);

    public EffectShader getEnchantmentShader();

    public void setEnchantmentShader(EffectShader enchantShader);

    public int getMinSkillLevel();

    public void setMinSkillLevel(int level);

    public int getArea();

    public void setArea(int area);

    public float getCastingTime();

    public void setCastingTime(float time);

    public float getTaperCurve();

    public void setTaperCurve(float value);

    public float getTaperDuration();

    public void setTaperDuration(float value);

    public float getSecondAVWeight();

    public void setSecondAVWeight(float value);

    public int getEffectType();

    public void setEffectType(int value);

    public skyproc.genenums.ActorValue getPrimaryAssocItem();

    public void setPrimaryAssocItem(skyproc.genenums.ActorValue val);

    public Explosion getExplosion();

    public void setExplosion(Explosion explosion);

    public skyproc.genenums.ActorValue getSecondAssocItem();

    public void setSecondAssocItem(skyproc.genenums.ActorValue val);

    public Art getCastingArt();

    public void setCastingArt(Art art);

    public Art getHitEffectArt();

    public void setHitEffectArt(Art art);

    public float getSkillUsageMult();

    public void setSkillUsageMult(float mult);

    public DualCastArt getDualCast();

    public void setDualCast(DualCastArt art);

    public float getDualCastScale();

    public void setDualCastScale(float scale);

    public Art getEnchantArt();

    public void setEnchantArt(Art art);

    public Spell getEquipAbility();

    public void setEquipAbility(Spell spell);

    public ImageSpaceMod getImageSpaceMod();

    public void setImageSpaceMod(ImageSpaceMod imageSpaceMod);

    public float getScriptAIDataScore();

    public void setScriptAIDataScore(float score);

    public float getScriptAIDataTime();

    public void setScriptAIDataTime(float score);

}
